package com.donquijote.proxy02;

import net.sf.cglib.proxy.InvocationHandler;
import net.sf.cglib.proxy.MethodInterceptor;
import net.sf.cglib.proxy.MethodProxy;

import java.lang.reflect.Method;

/**
 * @author 421527548@qq.com
 * @version V1.0
 * @title
 * @description
 * @date 2022-11-28 12:42
 */
public class TimerInvocation implements MethodInterceptor {

    @Override
    public Object intercept(Object target, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable {

        //前面增强
        System.out.println("==============前面增强===========");

        //调用目标方法: 调用父类的方法
        /**
         * methodProxy ： 代理方法
         * target：被代理的对象
         * Objects ： 被代理对象的参数
         * */
        Object invokeSuper = methodProxy.invokeSuper(target, objects);

        //后面增强
        System.out.println("=============后面增强============");
        return invokeSuper;
    }
}
